home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib18.dsk / CLASS SCHEDULER.bas < prev    next >
BASIC Source File  |  2023-02-26  |  3KB  |  131 lines

  1. 10  REM  **********************
  2. 20  REM  *  CLASS  SCHEDULER  *
  3. 30  REM  *  BY PAUL M. HYMAN  *
  4. 40  REM  * COPYRIGHT (C) 1983 *
  5. 50  REM  * BY MICROSPARC, INC *
  6. 60  REM  * LINCOLN, MA. 01773 *
  7. 70  REM  **********************
  8. 80  TEXT : HOME : PRINT "** COPYRIGHT 1983 BY MICROSPARC, INC. **": PRINT 
  9. 100  REM  ARRAY OF CLASS NAMES
  10. 110  DIM CN$(8)
  11. 120  REM  NUMBER OF SECTIONS FOR EACH CLASS
  12. 130  DIM NS(8)
  13. 140  REM  ST IS START TIMES
  14. 150  REM  ET IS END TIMES
  15. 160  REM  SPACE FOR 8 CLASSES*10 SECTIONS PER CLASS*5 DAYS/WK
  16. 170  REM  A START TIME OF 0 MEANS CLASS DOES NOT MEET THAT DAY
  17. 180  DIM ST(8,10,5)
  18. 190  DIM ET(8,10,5)
  19. 200  REM  CURRENTLY SELECTED SECTION NUMBERS FOR EACH CLASS
  20. 210  DIM CS(8)
  21. 220  DATA  "MON","TUE","WED","THU","FRI"
  22. 230 D$ =  CHR$(4)
  23. 240 SC = 0
  24. 250  INPUT "ENTER CLASS DATA FILENAME - ";FF$
  25. 260  PRINT 
  26. 270  PRINT D$;"OPEN ";FF$
  27. 280  PRINT D$;"READ ";FF$
  28. 290  INPUT NC
  29. 300  FOR I = 0 TO NC -1
  30. 310  INPUT CN$(I)
  31. 320  IF CN$(I) = "" GOTO 310
  32. 330  INPUT NS(I)
  33. 340  FOR J = 0 TO NS(I) -1
  34. 350  FOR K = 0 TO 4
  35. 360  FOR L = 0 TO 1
  36. 370  GET X$
  37. 380  IF X$ = " " GOTO 370
  38. 390  IF X$ =  CHR$(13) GOTO 370
  39. 400  GET Y$
  40. 410  IF Y$ <"0"  OR Y$ >"9" GOTO 440
  41. 420 X$ = X$ +Y$
  42. 430  GET Y$
  43. 440 X =  VAL(X$)
  44. 450  IF Y$ < >":" GOTO 510
  45. 460  GET X$
  46. 470  GET Y$
  47. 480 X$ = X$ +Y$
  48. 490 Y =  VAL(X$)
  49. 500  GOTO 520
  50. 510 Y = 0
  51. 520  IF X <7  AND X >0  THEN X = X +12
  52. 530 X = X *60 +Y
  53. 540  IF L = 0  THEN ST(I,J,K) = X
  54. 550  IF L = 1  THEN ET(I,J,K) = X
  55. 560  NEXT L
  56. 570  NEXT K
  57. 580  NEXT J
  58. 590  NEXT I
  59. 600  PRINT 
  60. 610  PRINT D$;"CLOSE ";FF$
  61. 620  FOR I = 0 TO NC -1
  62. 630 CS(I) = 0
  63. 640  NEXT 
  64. 650 CF = 0
  65. 660  FOR I = 0 TO NC -2
  66. 670  FOR J = I +1 TO NC -1
  67. 680  PRINT ".";
  68. 690  FOR K = 0 TO 4
  69. 700 S1 = ST(I,CS(I),K)
  70. 710 S2 = ST(J,CS(J),K)
  71. 720 E1 = ET(I,CS(I),K)
  72. 730 E2 = ET(J,CS(J),K)
  73. 740  IF (S1 > = S2  AND S1 <E2)  OR (E1 >S2  AND E1 < = E2) GOTO 760
  74. 750  GOTO 770
  75. 760  IF S1 < >0  AND S2 < >0  THEN CF = 1
  76. 770  NEXT K
  77. 780  NEXT J
  78. 790  NEXT I
  79. 800  IF CF = 0  THEN  GOSUB 910:SC = 1
  80. 810  REM  INCREMENT SEC #S TO NEXT SCHEDULE
  81. 820  FOR I = 0 TO NC -1
  82. 830 CS(I) = CS(I) +1
  83. 840  IF CS(I) = NS(I)  THEN CS(I) = 0: GOTO 860
  84. 850 I = 1000: REM  EXITLOOP
  85. 860  NEXT 
  86. 870  IF I = 1001 GOTO 650
  87. 880  IF SC = 0  THEN  PRINT "NOT POSSIBLE TO SCHEDULE CLASSES"
  88. 890  END 
  89. 900  REM  SUBROUTINE TO DISPLAY SCHEDULE
  90. 910  HOME 
  91. 920 MI$ = "30"
  92. 930 HR = 6
  93. 940  FOR I = 2 TO 23
  94. 950  IF MI$ < >"30" GOTO 1000
  95. 960 MI$ = "00"
  96. 970 HR = HR +1
  97. 980  IF HR >12  THEN HR = HR -12
  98. 990  GOTO 1010
  99. 1000 MI$ = "30"
  100. 1010  VTAB I
  101. 1020  HTAB 1
  102. 1030  IF HR <10  THEN  PRINT " ";
  103. 1040  PRINT HR;MI$;
  104. 1050  NEXT 
  105. 1060  RESTORE 
  106. 1070  FOR I = 1 TO 5
  107. 1080  HTAB 7 *I
  108. 1090  VTAB 1
  109. 1100  READ DA$
  110. 1110  PRINT DA$
  111. 1120  NEXT 
  112. 1130  FOR I = 0 TO NC -1
  113. 1140  FOR J = 0 TO 4
  114. 1150 S1 = ST(I,CS(I),J):E1 = ET(I,CS(I),J)
  115. 1160 V = 1
  116. 1170  FOR TM = 420 TO 1080  STEP 30
  117. 1180 V = V +1
  118. 1190  IF S1 < = TM  AND E1 >TM GOTO 1210
  119. 1200  GOTO 1240
  120. 1210  HTAB 7 *(J +1)
  121. 1220  VTAB V
  122. 1230  PRINT CN$(I);
  123. 1240  NEXT TM
  124. 1250  NEXT J
  125. 1260  NEXT I
  126. 1270  VTAB 24: HTAB 1
  127. 1280  PRINT "PRESS RETURN FOR NEXT SCHEDULE";
  128. 1290  GET Z$
  129. 1300  VTAB 24: HTAB 1: CALL  -868
  130. 1310  RETURN 
  131. 1320  END